home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / proboard / doing112.zip / DOING.H < prev    next >
C/C++ Source or Header  |  1996-04-25  |  4KB  |  147 lines

  1. #ifndef DOING_H
  2. #define DOING_H
  3.  
  4. typedef char feline_rec[31];
  5.  
  6. int OS2Inst(void)
  7. {
  8.     asm {
  9.         mov ax,0x4010
  10.         int 0x2f
  11.         cmp ax,0x4010
  12.         jne installed
  13.     }
  14.     return 0;
  15. installed:
  16.     return 1;
  17. }
  18.  
  19. void SetOS2VMTitle(char far *desc)
  20. {
  21.     char tmp;
  22.  
  23.     if (strlen(desc)>12)
  24.     {
  25.         tmp=desc[12];
  26.         desc[12]=0;
  27.     } else tmp=0;
  28.     asm {
  29.         mov ah,0x64
  30.         mov dx,0x0001
  31.         mov cx,0x636c
  32.         mov bx,0x0000
  33.         les di,desc
  34.         int 0x21
  35.     }
  36.     if (tmp!=0) desc[12]=tmp;
  37. }
  38.  
  39. #ifdef _PB_SDK_H
  40.  
  41. bool SetDesc(char *desc)
  42. {
  43.     char fname[256];
  44.     char buf[31];
  45.     int count,rec;
  46.     FILE *f;
  47.  
  48.     sprintf(fname,"%sFELINE.ON",SysPath);
  49.     if(OS2Inst() && getenv("OS2DOING")!=NULL)
  50.     {
  51.         if(*(unsigned int*)desc==0xFFFE) SetOS2VMTitle(desc+2);
  52.         else SetOS2VMTitle(desc);
  53.     }
  54.     for(count=0;count<10;count++)
  55.     {
  56.          if(access(fname,0)!=0)
  57.          {
  58.             memset(buf,0,31);
  59.             if((f=fopen(fname,"wb"))==NULL) return FALSE;
  60.             for(rec=0;rec<Config->numnodes;rec++)
  61.                 fwrite(buf,sizeof(feline_rec),1,f);
  62.             fclose(f);
  63.          }
  64.          if((f=fopen(fname,"r+b"))!=NULL)
  65.          {
  66.              fseek(f,(NodeNumber-1)*sizeof(feline_rec),SEEK_SET);
  67.              if(strlen(desc)>30) desc[30]='\0';
  68.              if(fwrite(desc,sizeof(feline_rec),1,f)==1){fclose(f);return TRUE;}
  69.              fclose(f);
  70.          }
  71.     }
  72.     return FALSE;
  73. }
  74.  
  75. #else
  76.  
  77. #include <stdio.h>
  78. #include <stdlib.h>
  79. #include <io.h>
  80. #include <string.h>
  81.  
  82. #define TRUE (1)
  83. #define FALSE (0)
  84.  
  85. typedef struct
  86.    {
  87.       char        shellmsg[81];         /* Message to show when shelling                */
  88.       char        sysopname[36];        /* Name of sysop                                */
  89.       char        txtpath[61];          /* Path for textfiles                           */
  90.       char        mnupath[61];          /* Path for menu-files                          */
  91.       char        msgpath[61];          /* Path for message base                        */
  92.       char        uploadpath[61];       /* Uploadpath                                   */
  93.       char        editorname[61];       /* Name of external editor                      */
  94.       short       newuserlevel;         /* Level for new user                           */
  95.       short       newuserloglevel;      /* Loglevel for new user                        */
  96.       long        newuserflags;         /* New user flags                               */
  97.       short       max_passinput;        /* Maximum attempts for password entry          */
  98.       short       min_passlength;       /* Minimum password length                      */
  99.       short       inactivity_time;      /* Inactivity time-out limit                    */
  100.       short       max_sysop_pages;      /* Maximum times sysop can be paged             */
  101.       short       pagebell_length;      /* Length of page-bell (secs)                   */
  102.       short       mailcheck;            /* Check for mail at logon?                     */
  103.       short       europe;               /* European date format?                        */
  104.       short       numnodes;             /* # nodes                                      */
  105.    } CFIG_PRO;
  106.  
  107. int SetDesc(char *desc, int NodeNumber)
  108. {
  109.     char fname[256];
  110.     char buf[31];
  111.     int count,rec;
  112.     CFIG_PRO Config;
  113.     FILE *f;
  114.  
  115.     if(OS2Inst())
  116.     {
  117.         if(*(unsigned int*)desc==0xFFFE) SetOS2VMTitle(desc+2);
  118.         else SetOS2VMTitle(desc);
  119.     }
  120.     sprintf(fname,"%s\\CONFIG.PRO",getenv("PROBOARD"));
  121.     fopen(fname,"rb");
  122.     fread(&Config,sizeof(CFIG_PRO),1,f);
  123.     fclose(f);
  124.     sprintf(fname,"%s\\FELINE.ON",getenv("PROBOARD"));
  125.     for(count=0;count<10;count++)
  126.     {
  127.          if(access(fname,0)!=0)
  128.          {
  129.             memset(buf,0,31);
  130.             if((f=fopen(fname,"wb"))==NULL) return FALSE;
  131.             for(rec=0;rec<Config.numnodes;rec++)
  132.                 fwrite(buf,sizeof(feline_rec),1,f);
  133.             fclose(f);
  134.          }
  135.          if((f=fopen(fname,"r+b"))!=NULL)
  136.          {
  137.              fseek(f,(NodeNumber-1)*sizeof(feline_rec),SEEK_SET);
  138.              if(strlen(desc)>30) desc[30]='\0';
  139.              if(fwrite(desc,sizeof(feline_rec),1,f)==1){fclose(f);return TRUE;}
  140.              fclose(f);
  141.          }
  142.     }
  143.     return FALSE;
  144. }
  145.  
  146. #endif
  147. #endif